package tv.acgn.advertisement.publish.vo.adplan;

import java.time.LocalDateTime;

import javax.validation.constraints.NotBlank;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import tv.acgn.advertisement.publish.po.AdUserPO;
import tv.acgn.advertisement.publish.validator.group.GroupAdd;
import tv.acgn.advertisement.publish.validator.group.GroupDelete;
import tv.acgn.advertisement.publish.validator.group.GroupUpdate;
import tv.acgn.advertisement.publish.validator.message.AdPlanValidateMessage;
import tv.acgn.advertisement.servicebase.enumconst.CommonStatus;

/**
 * @program: advertisement-ad-pub-vo
 * @description: AdPlanRequestVO 增删改查推广计划AdPlan的请求类
 * @author: junG
 * @create: 2019-05-01 15:58
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdPlanRequestVO {

    @NotBlank(message = AdPlanValidateMessage.planIdNotBland,groups = {GroupUpdate.class, GroupDelete.class})
    private String planId;
    /**
     * 推广计划的用户 关联用户表的 {@link AdUserPO} userId
     * @see AdUserPO - userId
     */
    @NotBlank(message = AdPlanValidateMessage.userIdNotBlank)
    private String userId;

    @NotBlank(message = AdPlanValidateMessage.planNameNotBland, groups = {GroupAdd.class})
    private String planName;

    /**
     * 推广计划状态 值只允许 {@link CommonStatus} 中包含的值
     * @see CommonStatus
     */
    private Integer planStatus;

    /**
     * 推广计划 生效开始时间
     */
    private LocalDateTime startDate;

    /**
     * 推广计划 生效结束时间
     */
    private LocalDateTime endDate;

    /**
     * 推广计划 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 推广计划 最后修改时间
     */
    private LocalDateTime updateTime;

}
